package com.example.entity;

import lombok.Data;
import java.time.LocalDateTime;

/**
 * 操作日志实体
 */
@Data
public class OperationLog {
    
    /**
     * 主键ID
     */
    private Long id;
    
    /**
     * 操作用户ID
     */
    private Long userId;
    
    /**
     * 操作用户名
     */
    private String username;
    
    /**
     * 操作用户昵称
     */
    private String nickname;
    
    /**
     * 操作模块
     */
    private String module;
    
    /**
     * 操作类型：CREATE、UPDATE、DELETE、QUERY、LOGIN、LOGOUT、EXPORT、IMPORT等
     */
    private String operationType;
    
    /**
     * 操作描述
     */
    private String operationDesc;
    
    /**
     * 请求方法：GET、POST、PUT、DELETE等
     */
    private String requestMethod;
    
    /**
     * 请求URL
     */
    private String requestUrl;
    
    /**
     * 请求参数（JSON格式）
     */
    private String requestParams;
    
    /**
     * 响应结果（JSON格式，敏感信息需脱敏）
     */
    private String responseResult;
    
    /**
     * 操作状态：SUCCESS、FAILURE
     */
    private String status;
    
    /**
     * 错误信息
     */
    private String errorMsg;
    
    /**
     * 执行时间（毫秒）
     */
    private Long executionTime;
    
    /**
     * 操作IP地址
     */
    private String ipAddress;
    
    /**
     * 用户代理（浏览器信息）
     */
    private String userAgent;
    
    /**
     * 操作地点（根据IP解析）
     */
    private String location;
    
    /**
     * 日志级别：INFO、WARN、ERROR
     */
    private String logLevel;
    
    /**
     * 业务ID（关联的业务数据ID）
     */
    private String businessId;
    
    /**
     * 业务类型（关联的业务类型）
     */
    private String businessType;
    
    /**
     * 操作前数据（JSON格式）
     */
    private String beforeData;
    
    /**
     * 操作后数据（JSON格式）
     */
    private String afterData;
    
    /**
     * 创建时间
     */
    private LocalDateTime createTime;
    
    /**
     * 是否删除：0-未删除，1-已删除
     */
    private Integer deleted;
}
